package org.paradise.dms.services;

import java.sql.SQLException;
import java.util.List;

import org.paradise.dms.pojo.Dormitory;
import org.paradise.dms.pojo.DormitoryRate;
import org.springframework.stereotype.Service;

import com.dheaven.framework.dao.DaoException;

@Service
public interface DormitoryService {

	/**
	 * 
	 * 
	 * Description:查询所有的dormitory
	 * 
	 * @Version1.0 2009-3-18 下午09:20:35 李双江（paradise.lsj@gmail.com）创建
	 * @param apartmentid
	 * @return
	 */
	public List<Dormitory> listAllDormitoryByApartmentID(String apartmentid);

	/**
	 * 
	 * Description: 根据指定的宿舍名查询一条条宿舍信息
	 * 
	 * @Version1.0 2009-3-18 下午09:21:49 李双江（paradise.lsj@gmail.com）创建
	 * @param dormitoryname
	 * @return
	 */
	public List<Dormitory> findDormitoryByName(String dormitoryname);

	/**
	 * 
	 * Description:插入一条宿舍信息
	 * 
	 * @Version1.0 2009-3-18 下午09:23:49 李双江（paradise.lsj@gmail.com）创建
	 * @return
	 */
	public String insertDormitory();

	/**
	 * 
	 * Description:删除一条宿舍信息
	 * 
	 * @Version1.0 2009-3-18 下午09:24:03 李双江（paradise.lsj@gmail.com）创建
	 * @param dormitoryid
	 * @return
	 */
	public String deleteDormitoryByDormitoryID(String dormitoryid);

	/**
	 * 
	 * Description: 更新一条宿舍信息
	 * 
	 * @Version1.0 2009-4-1 上午01:36:28 李双江（paradise.lsj@gmail.com）创建
	 * @param dormitory
	 * @return
	 */
	public String updateDormitory(Dormitory dormitory);

	/**
	 * 
	 * Description:根据apartmentid获取指定宿舍的总记录数
	 * 
	 * @Version1.0 2009-3-20 上午12:06:31 李双江（paradise.lsj@gmail.com）创建
	 * @param apartmentid
	 * @param floorno
	 * @return
	 * @throws DaoException
	 */
	public int getRows(String apartmentid, String floorno) throws DaoException;

	/**
	 * 
	 * Description:根据apartmentid获取指定宿舍的总记录数
	 * 
	 * @Version1.0 2009-3-20 上午12:06:31 李双江（paradise.lsj@gmail.com）创建
	 * @param apartmentid
	 * @param floorno
	 * @return
	 * @throws DaoException
	 */
	public int getRows(String apartmentid) throws DaoException;

	/**
	 * 
	 * Description: 根据apartmentid和floorno获得所有空闲宿舍的记录数，用户分页
	 * 
	 * @Version1.0 2009-3-23 下午09:07:12 李双江（paradise.lsj@gmail.com）创建
	 * @param apartmentid
	 * @return
	 */
	public int getTotalAvailDormRows(String apartmentid, String floorno,int studentdormotrytype);

	/**
	 * 
	 * Description:返回满足某个预分配标记id的总宿舍个数
	 * 
	 * @Version1.0 Apr 22, 2009 2:55:22 PM 李双江（paradise.lsj@gmail.com）创建
	 * @param dormpreid
	 * @return
	 */
	public int getTotalAvailPreIdDormRows(String dormpreid);

	/**
	 * 
	 * 
	 * Description: 查询出一层的宿舍数目
	 * 
	 * @Version1.0 2009-3-20 上午03:38:13 李双江（paradise.lsj@gmail.com）创建
	 * @param apartmentname
	 * @param dormitoryfloorno
	 * @return
	 * @throws DaoException
	 */
	public int getAFloorRows(String apartmentname, String dormitoryfloorno) throws DaoException;

	/**
	 * 
	 * Description: 通过公寓的id和floorno查询该公寓的所有宿舍，有分页功能
	 * 
	 * @Version1.0 2009-3-20 上午03:14:35 李双江（paradise.lsj@gmail.com）创建
	 * @param apartmentid
	 * @param pageSize
	 * @param startRow
	 * @return
	 */
	public List<Dormitory> listDormitoryByApartmentIDAndFloorNo(String apartmentid, String floorno, int pageSize, int startRow);

	/**
	 * 
	 * Description: 通过公寓的id查询该公寓的所有宿舍，有分页功能
	 * 
	 * @Version1.0 2009-3-20 上午03:14:35 李双江（paradise.lsj@gmail.com）创建
	 * @param apartmentid
	 * @param pageSize
	 * @param startRow
	 * @return
	 */
	@SuppressWarnings("unchecked")
	public List listDormitoryByApartmentID(String sql);

	/**
	 * 
	 * Description:为首页查看宿舍详情重写的方法
	 * 
	 * @Version1.0 Apr 28, 2009 2:46:25 AM 李双江（paradise.lsj@gmail.com）创建
	 * @param apartmentid
	 * @param pageSize
	 * @param startRow
	 * @return
	 */
	public List<Dormitory> listDormitoryByApartID(String apartmentid, int pageSize, int startRow);

	/**
	 * 
	 * Description:根据公寓ID加楼层号或者加宿舍号查询宿舍信息，有分页功能
	 * 
	 * @Version1.0 2009-3-20 上午03:19:10 李双江（paradise.lsj@gmail.com）创建
	 * @param apartmentid
	 * @param floorno
	 * @param dormitorytname
	 * @param pageSize
	 * @param startRow
	 * @return
	 * @throws DaoException
	 */
	public List<Dormitory> findDormitoryByApartmentNameAndFloornoOrDormname(String apartmentid, String dormitoryfloorno, String dormitoryname, int pageSize, int startRow) throws DaoException;

	/**
	 * 
	 * Description: 根据dormitoryid来查询宿舍的显示特征项。以确定页面宿舍的显示图片
	 * 
	 * @Version1.0 2009-3-21 上午03:21:34 李双江（paradise.lsj@gmail.com）创建
	 * @param dormitory
	 * @return
	 * @throws DaoException
	 * @throws SQLException
	 */
	@SuppressWarnings("unchecked")
	public List findDormitoryDisplayPictureSpec(String[] dormitoryid) throws DaoException, SQLException;

	/**
	 * 
	 * Description: 通过apartmentid来查看空闲的宿舍房态
	 * 
	 * @Version1.0 2009-3-23 上午12:58:43 李双江（paradise.lsj@gmail.com）创建
	 * @return
	 */
	@SuppressWarnings("unchecked")
	public List listAvailDormitoryByApartmentid(String apartmentid, String floorno,int studentdormitorytype, int pageSize, int startRow);

	/**
	 * 
	 * Description: 根据公寓的preid去查询宿舍
	 * 
	 * @Version1.0 Apr 22, 2009 2:56:49 PM 李双江（paradise.lsj@gmail.com）创建
	 * @param dormpreid
	 * @param pageSize
	 * @param startRow
	 * @return
	 */
	@SuppressWarnings("unchecked")
	public List listAvailDromPerPageByPreID(String dormpreid, int pageSize, int startRow);

	/**
	 * 
	 * Description: 分页查询预标记的宿舍列表
	 * 
	 * @Version1.0 2009-4-5 下午12:46:05 李双江（paradise.lsj@gmail.com）创建
	 * @param dormitorypreallocationid
	 * @param pageSize
	 * @param startRow
	 * @return
	 */
	public List<Dormitory> getDormitoryByDormitoryPreID(String dormitorypreallocationid, int pageSize, int startRow);

	/**
	 * 
	 * Description:查询出预标记宿舍的总记录数
	 * 
	 * @Version1.0 2009-4-5 下午12:44:55 李双江（paradise.lsj@gmail.com）创建
	 * @param dormitorypreallocationid
	 * @return
	 */
	public int getDormitoryByDormitoryPreIDRows(String dormitorypreallocationid);

	/**
	 * 
	 * Description:根据传入的dormitoryid的列表和预分配的id值批量更新宿舍为某个预分配标记
	 * 
	 * @Version1.0 2009-4-6 下午02:07:05 李双江（paradise.lsj@gmail.com）创建
	 * @param dormidList
	 * @param dormitoryallocationid
	 * @return
	 */
	public String updateBatchDormitoryPreassignInfo(String dormidList, String dormitoryallocationid);

	/**
	 * 
	 * Description: 宿舍批量更新页面批量标记整个公寓的preid方法
	 * 
	 * @Version1.0 Apr 29, 2009 12:26:09 AM 李双江（paradise.lsj@gmail.com）创建
	 * @param apartmentid
	 * @param dormallocationid
	 * @return
	 */

	public String updateAApartmentDormPreID(String apartmentid, String dormallocationid);

	/**
	 * 
	 * Description:根据dormitoryid去查这个宿舍的可住人数
	 * 
	 * @Version1.0 Apr 7, 2009 6:05:22 PM 李双江（paradise.lsj@gmail.com）创建
	 * @param dormitoryid
	 * @return
	 */
	@SuppressWarnings("unchecked")
	public List getAvailBedNoByDormitoryID(String dormitoryid);

	/**
	 * Description:根据dormitoryid及新的roomtype更新dormitorybed信息
	 * 
	 * @Version1.0 2009-4-21 23:49:22 PM 闫克（kurtyan777@gmail.com）创建
	 * @param dormitoryid
	 * @param newroomtype
	 * @return
	 */
	public int updateDormitoryBed(String dormitoryid, int newroomtype);

	/**
	 * 
	 * Description:根据apartmentid导出供卫生评比的excel
	 * 
	 * @Version1.0 May 5, 2009 3:06:59 PM 李双江（paradise.lsj@gmail.com）创建
	 * @param apartmentid
	 * @return
	 */
	@SuppressWarnings("unchecked")
	public List getDormListForRatingExcelByApartId(String apartmentid);

	/**
	 * 
	 * Description: 根据学号查询宿舍卫生状况
	 * 
	 * @Version1.0 May 9, 2009 6:38:39 PM 郑旭（zhengxu2006@gmail.com）创建
	 * @param stuno
	 * @return
	 */
	@SuppressWarnings("unchecked")
	public List getDormitoryRateByStudentno(String stuno,int studentdormitorytype);

	/**
	 * 
	 * Description:将通过Excel上传的DormitoryRate插入数据库
	 * 
	 * @Version1.0 May 10, 2009 4:26:38 PM 李双江（paradise.lsj@gmail.com）创建
	 * @param dr
	 * @return
	 */

	public void insertDormitoryRateFromEXCEL(DormitoryRate dr);

	public String[][] getDormitoryIDListByDormitoryPreID(String dormitorypreid);

	public int getAvailDormInAmountByDormitoryPreID(String dormitorypreid);
	
	public Dormitory getDormByDormId(int dormitoryid) ;
	
	public String[][] advancedDormSearch(String sql);
	
	public int getAdvancedDormSearchTotalNumber(String sql);
	
	public String updateDormInfo(String key ,String value,String id);
	
	public String[][] getAllDormitoryConcreteFunction();
}
